git config

git config --list		查看所有配置

git config user.name 'wenhao.zhang'		初次运行git前需要配置 user.name user.email

git config --global user.email "you@example.com"

git config --global user.name "Your Name"

git add 

git add . 		添加所有文件

git add *.c	添加所有.c的文件

git commit 

git commit -m 'remark'	将暂存区放入版本库

git branch

git branch		查看本地分支

git branch -a		查看所有分支（包括远程分支）

git branch -r		查看所有远程分支

git branch test		创建分支test，同 git checkout -b test

git branch -d test	删除分支

git remote

git remote -v 查看远程版本库信息

git remote add [shortname] [url]	添加远程版本库

git remote add origin www@47.109.82.21:/data/git_repository/xadmin.git

git checkout

git checkout -b master 新建master分支，并切换到这个分支，相当于是复制当前分支所有的commit到新创建的分支

git checkout master		切换分支

git checkout -- filename	将工作区已traced的文件还原到上次暂存区的状态

git checkout -- * 		将所有文件还原

git checkout .			将所有文件还原

git checkout -b 5.1 origin/5.1    新建分支，使用远程分支创建

git merge

git merge dev/home	将dev/home分支上的内容合并到当前分支

git log

查看提交日志

git log -- filename    查看该文件的提交记录，相当于git log的按文件筛选功能

git log --oneline	将每一次提交简化为一行

git log --oneline --decorate	显示分支、标签信息

git log --oneline --decorate --graph	图像显示分支提交历史	

git diff

git diff	查看工作区和暂存区文件差异，如果所有文件都add了，就不会显示了

git diff --cached		比较暂存区和版本库的区别

git diff HEAD			比较工作区和版本库的区别

git clone

为了得到一个项目的copy，项目仓库地址，用哪个协议（ssh,git,https）

本地会用最后一级目录去掉.git作为本地文件名

第二个参数是重命名的本地文件名

git clone https://github.com/top-think/think.git tp5

默认下载的是master分支，如果远程版本库没有master分支，则clone下来的就只是版本库，没有代码，即只有一个.git文件

git clone -b testing www@47.109.82.21:/data/git_repository/smyy.git    指定分支clone

git push

git push origin master

git push origin local_branch:remote_branch		指定推送本地哪个分支到远程哪个分支

git pull

git pull origin master    远程分支master与本地当前分支合并

git pull origin master:dev    远程分支master与本地指定分支dev合并

git clean

将工作区的没有被tracked 的文件和目录删除，注意如果是已经 tracked的文件，只是修改了，不会影响

-n 查看将删除的内容，只展示文件，如果违背tracked的目录不显示

-f 删除未跟踪的文件

-d 删除未跟踪的目录，包括.gitignore

-x 同时删除.gitignore中忽略的内容

git clean -f	同时删除未被跟踪的文件和目录，用在hooks post-receive里面，用来将目标推送的仓库工作区还原。

git clean -df 	删除未被跟踪的目录，在实际使用中发现生产环境版本库执行 git clean -f 无效，加上 d有效

git stash

stash 隐藏

将工作区的修改隐藏放入一个list，等待处理完别的时候再从list里恢复；

git stash list 查看list，切换别的分支后该list在分支间是共享的

git stash pop 恢复最后一次隐藏的内容，并从list里删除（如果有冲突则不删除，需要后续 drop 或 clear），且在未提交前不能再次pop

git stash apply [id]

git stash drop stash@{0}		删除指定的stash

git stash clear 	清除所有stash list

git rm

git rm --cached newfile		在缓存区删除文件，工作区不变

git rm newfile				新增一个文件，add了，commit了，执行后将工作区文件删除，并将删除操作提交缓冲区，等待commit

git rm -r --cached .idea		.idea之前不小心提交版本库了，需要从版本库删除，并加入.gitignore不再追踪